package com.hunliji.monitor.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.common.collect.Lists;
import com.hunliji.monitor.dao.mapper.mt.AlertChatBindDAO;
import com.hunliji.monitor.dao.mapper.mt.AlertUserBindDAO;
import com.hunliji.monitor.dao.model.dataobject.AlertChatBindDO;
import com.hunliji.monitor.dao.model.dataobject.AlertUserBindDO;
import com.hunliji.monitor.service.api.AlertUserBindService;
import com.hunliji.monitor.service.api.model.bo.AlertChatBindBO;
import com.hunliji.monitor.service.api.model.bo.AlertUserBindBO;
import com.hunliji.monitor.share.component.convertor.ConverterFacade;
import java.util.List;
import java.util.Objects;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;

/**
 * File：AlertUserBindServiceImpl.java<br> Title: <br> Description: <br>
 *
 * @author lejin Date: 2022/10/10
 */
@Service
public class AlertUserBindServiceImpl implements AlertUserBindService {

    @Resource
    AlertUserBindDAO alertUserBindDAO;

    @Resource
    ConverterFacade converterFacade;

    @Override
    public List<AlertUserBindBO> listByQuery(Long alertConfigId, Long userInfoId) {
        LambdaQueryWrapper<AlertUserBindDO> queryWrapper = new LambdaQueryWrapper<AlertUserBindDO>()
            .eq(Objects.nonNull(alertConfigId), AlertUserBindDO::getAlertConfigId, alertConfigId)
            .eq(Objects.nonNull(userInfoId), AlertUserBindDO::getUserInfoId, userInfoId)
            .eq(AlertUserBindDO::getDeleted, Boolean.FALSE);
        List<AlertUserBindDO> list = alertUserBindDAO.selectList(queryWrapper);
        return converterFacade.convertList(list, AlertUserBindBO.class);
    }

    @Override
    public AlertUserBindBO getById(Long id) {
        if(Objects.isNull(id)){
            return null;
        }
        AlertUserBindDO alertUserBindDO = alertUserBindDAO.selectById(id);
        return converterFacade.convert(alertUserBindDO, AlertUserBindBO.class);
    }

    @Override
    public void insert(AlertUserBindBO alertUserBindBO) {
        if(Objects.isNull(alertUserBindBO)){
            return;
        }
        AlertUserBindDO alertChatBindDO = converterFacade.convert(alertUserBindBO,
            AlertUserBindDO.class);
        alertUserBindDAO.insert(alertChatBindDO);
    }

    @Override
    public void update(AlertUserBindBO alertUserBindBO) {
        if(Objects.isNull(alertUserBindBO)){
            return;
        }
        AlertUserBindDO alertUserBindDO = converterFacade.convert(alertUserBindBO,
            AlertUserBindDO.class);
        alertUserBindDAO.updateById(alertUserBindDO);
    }

    @Override
    public void deleteByAlertConfigId(Long alertConfigId) {
        if(Objects.isNull(alertConfigId)){
            return;
        }
        LambdaUpdateWrapper<AlertUserBindDO> updateWrapper = new LambdaUpdateWrapper<AlertUserBindDO>()
            .eq(AlertUserBindDO::getAlertConfigId, alertConfigId)
            .set(AlertUserBindDO::getDeleted, Boolean.TRUE);
        alertUserBindDAO.update(null, updateWrapper);
    }

    @Override
    public void deleteById(Long id) {
        if(Objects.isNull(id)){
            return;
        }
        LambdaUpdateWrapper<AlertUserBindDO> updateWrapper = new LambdaUpdateWrapper<AlertUserBindDO>()
            .eq(AlertUserBindDO::getId, id)
            .set(AlertUserBindDO::getDeleted, Boolean.TRUE);
        alertUserBindDAO.update(null, updateWrapper);
    }
}
